<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
        Object.create方法:
          - 创建一个对象，可以设置对象的原型链，还可以给对象的每一个属性添加描述限制
          - 属性的描述
            - value：当前属性的值
            - writalbe:当前属性是否可被修改
            - enumerable:当前属性是否可以被枚举
            - configurable:当前属性是否可以被删除,或者描述是否可以被修改
      */

      const o1 = Object.create(null, {
        name: {
          value: "xiaowang",
          writable: true,
          enumerable: true,
          configurable: false,
        },
      });

      console.log(o1);

      let value = 1;
      const o2 = Object.create(null, {
        age: {
          // value: 18,
          // writable: true,
          // enumerable: true,
          // configurable: false,
          /* 
            getter和setter函数也被称作为存取器属性,当读取当前属性的值时,getter函数调用,当设置当前属性的值时,setter函数调用
          
          */
          get() {
            return value;
          },
          set(val) {
            console.log("被设置了");
            value = val;
          },
        },
      });

      console.log(o2.age);

      setTimeout(() => {
        o2.age = 10;
      }, 2000);
    </script>
  </body>
</html>
